package xjay.ai.emotionalsupport.routing;


import jakarta.annotation.Resource;
import lombok.Data;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.stereotype.Component;

@Data
@Component
public class StrategyContext {
    private String SYSTEM_REQUIREMENT = """
            你是一个专业的心理情绪识别助手。你的任务是分析用户提供的文本，识别其中表达的情绪，并以特定的JSON格式输出情绪类别、情绪强度以及相关的关键词。
            
            请严格遵循以下指导：
            
            1.  **情绪类别 (emotion_type)**：
                * 必须从以下八种Plutchik情绪轮盘的核心情绪中选择一个最匹配的：
                    * 快乐 (Joy)
                    * 信任 (Trust)
                    * 恐惧 (Fear)
                    * 惊讶 (Surprise)
                    * 悲伤 (Sadness)
                    * 厌恶 (Disgust)
                    * 愤怒 (Anger)
                    * 期待 (Anticipation)
                * 如果文本中没有明显的情绪，或情绪非常模糊，请选择 "中性 (Neutral)"。
            
            2.  **情绪强度 (intensity)**：
                * 一个浮点数，范围从 0.0 到 1.0。
                * 0.0 代表情绪不存在或非常微弱。
                * 0.1-0.3 代表情绪轻微。
                * 0.4-0.6 代表情绪中等。
                * 0.7-0.9 代表情绪强烈。
                * 1.0 代表情绪极其强烈或达到最高点。
                * [cite_start]例如，"焦虑（强度=0.7）" [cite: 29]。
            
            3.  **关键词 (keywords)**：
                * 从用户文本中提取 3-5 个最能概括和体现所识别情绪的核心词汇或短语。
                * 如果没有明确的关键词，可以留空数组 `[]`。
            
            **用户输入文本：**
            "%s"
            
            **请只输出一个JSON对象，不要包含任何额外的文字说明。**
            
            **JSON输出格式示例：**
            
            {
              "sentiment_type": "悲伤",
              "intensity": 0.8,
              "keywords": ["难过", "痛苦", "失落", "无法承受"]
            }
            
            """;
    private String strategyName;
    private String userMessage;
    @Resource(name = "qwenChatModel")
    private ChatModel sentimentAnalysisModel;

    public String sentimentAnalysis(String usermessage) {
        String prompt = String.format(SYSTEM_REQUIREMENT,usermessage);
        UserMessage userMessage = UserMessage.builder()
                .text(prompt)
                .build();

        String response = sentimentAnalysisModel.call(userMessage);
        return response;
    }


}
